developmentor - a developer services company				  
				      Essential .NET Security
   Modules

Windows Security 102


1. Does a server need to impersonate his client to make access control decisions?
Yes. You should always impersonate the client so the OS can make appropriate ACL checks for you.
No. You can make many access control decisions by looking at the client's token (looking for a particular group as in role-based security, for example). Use impersonation only when you have ACLs that are administered specifically to grant and deny access to clients.

2. Impersonation puts a server into a fragile state
because an asynchronous call may cause an unanticipated security context change
because any unanticipated thread switch due to a legacy COM component changes your security context
because some behavior can be surprising, for example, COM may or may not use the thread token as your identity for outgoing calls, depending on an esoteric feature called "cloaking"
all of the above

3. When impersonating a client, database connections to SQL server using integrated security
will use connection pooling for scalability
will likely be anonymous because you won't usually have the client's network credentials
will time out when you stop impersonating

4. Delegation
is a way to forward a client's credentials to a back end server
only works on Windows Server 2003
makes systems safer because the back end always sees the client's credentials
all of the above

5. Constrained delegation
is where a middle tier server is given blanket control over a client's credentials, and trusted only to use those credentials with a list of specified services
is where the authority only issues forwarded client credentials to a middle tier server for a list of specified services
requires the back end server to be upgraded to Windows Server 2003

6. Protocol transition
is a new service that converts SPX packets into TCP packets
requires the client to be running Windows XP or greater, and have the latest version of the Kerberos SSPI provider installed.
allows a server to obtain Kerberos tickets on behalf of a client who might not be able to obtain them herself. The server is trusted to have correctly authenticated the client in some way.